package templateExcel;

import lombok.Data;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

//模板单元
@Data
public class TemplateCell {

    //行数
    private int row;

    //列数
    private int column;

    //单元格表达式,解析之后自动生成
    private String expression;

    //有序列表
    private List<TemplateQuote> quotes = new LinkedList<>();

    public void addTemplateQuote(TemplateQuote quote) {
        quotes.add(quote);
    }


    //i为纵向遍历索引,j为横向遍历索引
    //获取所有节点上的值
    public Map<String, Object> values(Map<String, Object> values, int i, int j) {
        //遍历所有表达式获取引用值
        Map<String, Object> vs = new HashMap<>();
        for (TemplateQuote quote : quotes) {
            vs.put(quote.getQuoteName(), quote.getValue(values, i, j));
        }
        return vs;
    }

    //获取最大索引的i
    public int maxI(Map<String, Object> values) {

        int maxI = 0;

        for (TemplateQuote quote : quotes) {
            int i = quote.maxI(values);
            if (i > maxI) {
                maxI = i;
            }
        }

        return maxI;
    }

    //获取最大索引的i
    public int maxJ(Map<String, Object> values) {

        int maxJ = 0;
        for (TemplateQuote quote : quotes) {
            int j = quote.maxJ(values);
            if (j > maxJ) {
                maxJ = j;
            }
        }

        return maxJ;
    }


}
